﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using BaseDeDatos;
using Utilidades;
using Modelo;
namespace Procesos
{
    public static class ControlUsuario
    {
       /* public static bool AutentificarUsuario(string usuario,string contrasena)
        {
            try
            {
                if (usuario.Equals("") || contrasena.Equals(""))
                    throw new Exception("Todos los campos son obligatorios");

                string contrasenaEncriptada = EncriptorAES.Encriptar(contrasena);
                string contrasenaQueDeberiaSer = BDUsuario.ObtenerContrasena(usuario);

                if (contrasenaQueDeberiaSer.Equals(""))
                    throw new Exception("El nombre de usuario es incorrecto");
                if (!contrasenaQueDeberiaSer.Equals(contrasenaEncriptada))
                    throw new Exception("La contraseña es incorrecta");
                if (contrasenaQueDeberiaSer.Equals(contrasenaEncriptada))
                    return true;
                return false;
            }
            catch (Exception e) 
            {
                
                throw e;
            }
        }*/
        //-------------------------------------------------------------
        public static void cambiarContrasena(Usuario usuario, string contrasena,DateTime fechaNueva)
        {
            try
            {
                //if (usuario.Contrasena != contrasena)
                //    throw new Exception("La antigua contrasena no coincide");
                //Validar.validarPassword(nueva);
                //Validar.validarPasswordsIguales(nueva, nuevaRepetida);
                BDUsuario.cambiarContrasena(usuario.NombreUsuario, EncriptorAES.Encriptar(contrasena),fechaNueva);    
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public static List<Persona> obtenerEmpleados()
        {
            try
            {
                return BDUsuario.ObtenerEmpleados();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public static void cambiarCargo(Usuario usuario,string nuevoCargo)
        {
            try
            {
                BDUsuario.cambiarCargo(usuario.NombreUsuario,nuevoCargo);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public static Usuario AutentificarUsuario(string usuario, string contrasena)
        {
            try
            {
                if (usuario.Equals("") || contrasena.Equals(""))
                    throw new Exception("Todos los campos son obligatorios");

                string contrasenaEncriptada = contrasena;/*= EncriptorAES.Encriptar(contrasena)*/;
                Usuario datosUsuario = BDUsuario.ObtenerUsuario(usuario);

                if (datosUsuario==null)
                    throw new Exception("El nombre de usuario es incorrecto");
                if (!datosUsuario.Contrasena.Equals(contrasenaEncriptada))
                    throw new Exception("La contraseña es incorrecta");
                if (datosUsuario.Contrasena.Equals(contrasenaEncriptada))
                    return datosUsuario;
                return null;
            }
            catch (Exception e)
            {

                throw e;
            }
        }




        public static DateTime GetUltimaFecha(Usuario usuario)
        {
            try
            {
                return BaseDeDatos.BDUsuario.ObtenerFechaCambio(usuario);    
            }
            catch(Exception ex)
            {
                throw ex;
            }
        }

        public static DateTime GetHoraEntrada(Usuario usuario)
        {
            try
            {
                return BaseDeDatos.BDUsuario.GetHoraEntrada(usuario);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public static bool MismaContrasenaAnterior(Usuario usuario, string p)
        {
            try
            {
                return BaseDeDatos.BDUsuario.mismaContrasena(usuario, EncriptorAES.Encriptar(p));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public static Usuario ObtenerUsuario(string name)
        {
            try{
                if (name.Length == 0)
                    throw new Exception("El nombre de cuenta es obligatorioa");
                if(name.Length>100)
                    throw new Exception("Longitud de cuenta inválida");
                Usuario u = BDUsuario.ObtenerUsuario(name);
                if(u==null)
                    throw new Exception("La cuenta de usuario no existe");
                return u;
                }
                catch( Exception e)
                {
                    throw e;
                }
        }
        public static DateTime GetHoraSalida(Usuario usuario)
        {
            try
            {
                return BaseDeDatos.BDUsuario.GetHoraSalida(usuario);
                
            }
            catch( Exception e)
            {
                throw e;
            }
        }
    }
}
